跳到主要内容

硬件在环仿真HITL-PX4 指南

硬件在环仿真HITL

硬件在环(HITL 或 HIL)是一种模拟模式,其中常规 PX4 固件在真实的飞行控制器硬件上运行。这种方法的好处是可以在真实硬件上测试大部分实际的飞行代码。

PX4 支持多旋翼飞行器的 HITL(使用 jMAVSimGazebo Classic )和 VTOL(使用 Gazebo Classic)。

HITL兼容机身

兼容的机身与模拟器的设置是:

机体SYS_AUTOSTART凉亭经典模拟MAVSim
HIL四轴飞行器X1001
HIL 标准 VTOL 四翼飞机1002

HITL仿真环境

通过硬件在环 (HITL) 仿真,普通的 PX4 固件可以在真实硬件上运行。JMAVSim 或 Gazebo Classic(在开发计算机上运行)通过 USB/UART 连接到飞行控制器硬件。模拟器充当网关,在 PX4 和 QGroundControl 之间共享 MAVLink 数据。

信息

如果飞行控制器支持网络并且使用稳定、低延迟的连接(例如有线以太网连接 - WiFi 通常不够可靠),也可以通过 UDP 连接模拟器。例如,此配置已在通过以太网连接到计算机的 Raspberry Pi 上运行 PX4 进行测试(包含运行 jMAVSim 命令的启动配置可在 px4_hil.config 中找到)。

下图显示了模拟环境:

  • 选择了不启动任何真实传感器的 HITL 配置(通过 QGroundControl )。
  • jMAVSimGazebo Classic 通过 USB 连接到飞行控制器。
  • 该模拟器通过 UDP 连接到 QGroundControl ,并将其 MAVLink 消息桥接到 PX4。
  • Gazebo ClassicjMAVSim 还可以连接到板外 API 并将 MAVLink 消息桥接到 PX4。
  • (可选)可以使用串行连接通过QGroundControl 连接操纵杆/游戏手柄硬件 。

HITL 设置 - jMAVSim 和 Gazebo Classic

HITL 与 SITL

SITL 在模拟环境中的开发计算机上运行,并使用专门为该环境生成的固件。除了模拟驱动程序从模拟器提供虚假的环境数据外,系统运行正常。

相比之下,HITL 在普通硬件上以“HITL 模式”运行普通的 PX4 固件。模拟数据进入系统的位置与 SITL 不同。核心模块(例如指挥官和传感器)在启动时会进入 HITL 模式,从而绕过一些常规功能。

总而言之,HITL 使用标准固件在实际硬件上运行 PX4,但 SITL 实际上执行了更多的标准系统代码。

设置 HITL

检查固件中是否有 HITL

HITL 所需的模块( pwm_out_sim )并非默认内置于所有 PX4 固件中。

要检查您的飞行控制器上是否存在该模块:

  1. 打开 QGroundControl
  2. 打开 分析工具 > Mavlink 控制台
  3. 在控制台中输入以下命令:
    嘘pwm_out_sim status
  4. 如果返回值是 nsh: pwm_out_sim: command not found ,则表示您没有安装该模块。

如果 pwm_out_sim 不存在,您将需要将其添加到固件中才能使用 HITL 模拟。

将 HITL 模块添加到固件

将以下键添加到飞行控制器的配置文件中,以包含所需的模块(例如,请参阅 board/px4/fmu-v6x/default.px4board )。然后重新构建固件并将其刷入开发板。

文本CONFIG_MODULES_SIMULATION_PWM_OUT_SIM=y

您也可以使用以下命令启动 GUI 配置工具,并在以下路径以交互方式启用它们: modules > Simulation > pwm_out_sim 。例如,要更新 fmu-v6x,您可以使用:

PX4 配置

  1. 通过 USB 将 自动驾驶仪直接连接到 QGroundControl 。
  2. 选择机身
    1. 打开 “设置”>“机身”
    2. 选择 您想要测试的 兼容机身。然后点击 机身设置 页面右上角的 “应用并重启”
  3. 如果需要,校准您的 RC 或操纵杆。
  4. 设置UDP
    1. 在设置菜单的 常规选项 卡下,取消选中除 UDP 之外的所有 自动连接 框。 HITL 的 QGC 自动连接设置
  5. (可选)配置操纵杆和故障保护。设置以下 参数 ,以便使用操纵杆代替 RC 遥控器:
    • COM_RC_IN_MODE 设置 为“操纵杆/无 RC 检查”。这将允许操纵杆输入并禁用 RC 输入检查。
    • NAV_RCL_ACT 设置为“禁用”。这可确保在不使用无线电控制运行 HITL 时,不会受到任何 RC 故障保护操作的干扰。 提示 QGroundControl 用户指南 还包含有关 操纵杆虚拟操纵杆 设置的说明 。

配置完成后, 关闭 QGroundControl 并断开飞行控制器硬件与计算机的连接。

模拟器特定设置

按照以下部分中针对特定模拟器的适当设置步骤进行操作。

凉亭经典

信息

确保 QGroundControl 没有运行!

  1. 使用Gazebo Classic 构建 PX4 (为了构建 Gazebo Classic 插件)。
  2. 打开车辆模型的 sdf 文件(例如 Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/iris_hitl/iris_hitl.sdf )。
  3. 如果需要, 请替换 serialDevice 参数( )。 /dev/ttyACM0 信息 串行设备取决于用于将飞行器连接到计算机的端口(通常是 /dev/ttyACM0 )。在 Ubuntu 上检查的一个简单方法是插入自动驾驶仪,打开终端,然后输入 dmesg | grep "tty" 。正确的设备将是最后显示的设备。
  4. 设置环境变量: 并以 HITL 模式运行 Gazebo Classic:
    嘘gazebo Tools/simulation/gazebo-classic/sitl_gazebo-classic/worlds/hitl_iris.world
  5. 启动 QGroundControl 。它应该自动连接到 PX4 和 Gazebo Classic。

jMAVSim(仅限四旋翼飞行器)

信息

确保 QGroundControl 没有运行!

  1. 将飞行控制器连接到计算机并等待其启动。
  2. 在 HITL 模式下运行 jMAVSim: 信息 /dev/ttyACM0 根据需要 替换串行端口名称。在 macOS 上,此端口为 /dev/tty.usbmodem1 。在 Windows(包括 Cygwin)上,此端口为 COM1 或其他端口 - 请在 Windows 设备管理器中检查连接。
  3. 启动 QGroundControl 。它应该会自动连接到 PX4 和 jMAVSim。

在 HITL 中执行自主任务

您应该能够使用 QGroundControl运行任务 并以其他方式控制车辆。